﻿package com.Galaxisfarm {
	// Bibliotecas da game engine Flixel
	import com.adamatomic.flixel.*;
	// Biblioteca de definição de ponto 2D
	import flash.geom.Point;
	
	public class Tree extends FlxSprite {
		// Variável que indica se é possível
		// cortar a árvore ou não
		private var _cut:Boolean;
		// Variável que indica se está perto do rio
		// ou não
		private var _near_river:Boolean;
		// Variável que armazena o nome
		private var _name:String;
		
		// Método construtor
		public function Tree(Graphic:Class, X:Number, Y:Number, Width:Number, Height:Number):void {			
			// Carrega o sprite
			super(Graphic, X, Y, false, false, Width, Height);
			
			// Inicialmente pode cortar
			_cut = true;
			
			// Inicialmente define que a árvore não está perto do rio
			_near_river = false;
			
			// Inicialmente a árvore não possui nome definido
			_name = "";
			
			// Cria as animações
			addAnimation("normal", [0]);
			addAnimation("selected", [1]);
		}
		
		// Método que obtém o nome da árvore
		public function getName():String {
			return _name;
		}
		
		// Método que define o nome da árvore
		public function setName(value:String):void {
			_name = value;
		}
		
		// Método que indica se está perto do rio
		public function getNearRiver():Boolean {
			return _near_river;
		}
		
		// Método que define se está perto do rio
		public function setNearRiver(value:Boolean):void {
			_near_river = value;
		}
		
		// Método que verifica se o mouse está em cima da árvore
		public function checkOnMouseOver(mouse:Point):Boolean {
			if (this.overlapsPoint(FlxG.mouse.x, FlxG.mouse.y, false)) {
				play("selected");
				return true;
			} else {
				play("normal");
				return false;
			}
		}
		
		// Método que indica se é a árvore é cortável
		public function isCuttable():Boolean {
			return _cut;
		}
		
		// Método que define se pode ou não cortar a árvore
		public function setIsCuttable(value:Boolean):void {
			_cut = value;
		}
	}
}